package com.mmall.pay.service;


import com.mmall.pay.exception.MmallPayException;
import com.mmall.pay.param.CloseOrderParam;
import com.mmall.pay.param.CreateOrderParam;
import com.mmall.pay.param.QueryOrderParam;
import com.mmall.pay.param.RefundParam;
import com.mmall.pay.param.RefundQueryParam;
import com.mmall.pay.result.CloseOrderResult;
import com.mmall.pay.result.CreateOrderResult;
import com.mmall.pay.result.QueryOrderResult;
import com.mmall.pay.result.RefundQueryResult;
import com.mmall.pay.result.RefundResult;

/**
 * @author gg
 * @version PayService.java, v 0.1 2019-05-27 18:52 gg
 */
public interface PayService {

    /**
     * 查询订单
     *
     * @param queryOrderParam QueryOrderParam
     * @return QueryOrderResult
     * @throws MmallPayException MmallPayException
     */
    QueryOrderResult queryOrder(QueryOrderParam queryOrderParam) throws MmallPayException;

    /**
     * 创建订单
     *
     * @param createOrderParam CreateOrderParam
     * @return CreateOrderResult
     * @throws MmallPayException MmallPayException
     */
    CreateOrderResult createOrder(CreateOrderParam createOrderParam) throws MmallPayException;

    /**
     * 退款
     *
     * @param refundParam RefundParam
     * @return RefundResult
     * @throws MmallPayException MmallPayException
     */
    RefundResult refund(RefundParam refundParam) throws MmallPayException;

    /**
     * 退款查询
     *
     * @param refundQueryParam RefundQueryParam
     * @return RefundQueryResult
     * @throws MmallPayException MmallPayException
     */
    RefundQueryResult refundQuery(RefundQueryParam refundQueryParam) throws MmallPayException;

    /**
     * 关闭订单
     *
     * @param closeOrderParam CloseOrderParam
     * @return CloseOrderResult
     * @throws MmallPayException MmallPayException
     */
    CloseOrderResult closeOrder(CloseOrderParam closeOrderParam) throws MmallPayException;
}